    <!DOCTYPE html>
<html lang="zh-cn">
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		
		<meta name="description" content="Nodejh&#39;s Blog">
		<meta name="generator" content="Hugo 0.31.1" />
		<title>Eclipse JSP/Servlet 环境搭建 &middot; node</title>
		<link rel="shortcut icon" href="http://nodejh.com/images/favicon.ico">
		<link rel="stylesheet" href="http://nodejh.com/css/style.css">
		<link rel="stylesheet" href="http://nodejh.com/css/highlight.css">
		

		
		<link rel="stylesheet" href="http://nodejh.com/css/font-awesome.min.css">
		

		
		<link href="http://nodejh.com/index.xml" rel="alternate" type="application/rss+xml" title="node" />
		
	</head>

    <body>
       <nav class="main-nav">
	
	
		<a href='http://nodejh.com/'> <span class="arrow">←</span>Home</a>
	
	<a href='http://nodejh.com/post'>Archive</a>
	<a href='http://nodejh.com/tags'>Tags</a>
	<a href='http://nodejh.com/projects'>Projects</a>
	<a href='http://nodejh.com/about'>About</a>

	

	
	<a class="cta" href="http://nodejh.com/index.xml">Subscribe</a>
	
</nav>


        <section id="wrapper" class="post">
            <article>
                <header>
                    <h1>
                        Eclipse JSP/Servlet 环境搭建
                    </h1>
                    <h2 class="headline">
                    Mar 17, 2016 19:15
                    · 2230 words
                    · 5 minutes read
                      <span class="tags">
                      
                      
                          
                              <a href="http://nodejh.com/tags/ubuntu">Ubuntu</a>
                          
                              <a href="http://nodejh.com/tags/eclipse">Eclipse</a>
                          
                              <a href="http://nodejh.com/tags/java">JAVA</a>
                          
                      
                      
                      </span>
                    </h2>
                </header>
                
                  
                    <div id="toc">
                      <nav id="TableOfContents">
<ul>
<li>
<ul>
<li><a href="#eclipse-jsp-servlet-环境搭建">Eclipse JSP/Servlet 环境搭建</a>
<ul>
<li><a href="#1-踩过的坑">1. 踩过的坑</a>
<ul>
<li><a href="#1-tomcat-版本过新">1) Tomcat 版本过新</a></li>
<li><a href="#2-eclispe-运行权限不够无法识别或执行-tomcat-服务器">2) Eclispe 运行权限不够无法识别或执行 Tomcat 服务器</a>
<ul>
<li><a href="#方法一-更改-opt-tomcat8-的权限">方法一：更改 <code>/opt/tomcat8</code> 的权限</a></li>
<li><a href="#方法二-使用-root-权限运行-eclipse">方法二：使用 root 权限运行 Eclipse</a></li>
</ul></li>
</ul></li>
<li><a href="#2-关联-eclispe-和-tomcat">2. 关联 Eclispe 和 Tomcat</a></li>
<li><a href="#3-使用-eclipse-创建第一个项目">3. 使用 Eclipse 创建第一个项目</a>
<ul>
<li><a href="#1-新建动态网站项目">1) 新建动态网站项目</a></li>
<li><a href="#2-新建一个-jsp-文件">2). 新建一个 JSP 文件</a></li>
<li><a href="#3-新建一个-servlet-文件">3). 新建一个 Servlet 文件</a></li>
</ul></li>
</ul></li>
</ul></li>
</ul>
</nav>
                    </div>
                  
                
                <section id="post-body">
                    <h2 id="eclipse-jsp-servlet-环境搭建">Eclipse JSP/Servlet 环境搭建</h2>

<p>本文假定你已安装了 JDK 环境，如未安装，可参阅：</p>

<ul>
<li><a href="http://nodejh.com/post/how-to-install-java-on-ubuntu/">Ubuntu下JAVA开发环境的配置</a></li>
<li><a href="http://nodejh.com/post/how-to-install-tomcat-on-ubuntu/">Ubuntu 下 Tomcat 的配置</a></li>
</ul>

<p></p>

<h3 id="1-踩过的坑">1. 踩过的坑</h3>

<h4 id="1-tomcat-版本过新">1) Tomcat 版本过新</h4>

<p>最近 Tomcat 更新到了 9.0，为了求新我们安装了 Tomcat 9.0，但 Eclipse 目前最高只能识别 Tomcat 8 的版本。如图：</p>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-1.png" alt="ubuntu-eclipse-1.png" /></p>

<p>所以为了解决问题，我们就只能再安装一个 Tomcat 8.0 了。因为 Tomcat 的安装只需要解压到指定目录即可，所以安装多少个版本都是互不影响的。如果你还不知道怎么安装，请参考：<a href="http://nodejh.com/post/how-to-install-tomcat-on-ubuntu/">Ubuntu 下 Tomcat 的配置</a>。</p>

<p>安装 8.0 和 9.0 的唯一区别是，下载的源码版本不同，即 <code>wget</code> 这一步不一样，安装 8.0 可以在链接下载：</p>

<pre><code>wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.0.32/bin/apache-tomcat-8.0.32.tar.gz
</code></pre>

<p>下载后可以解压到 <code>/opt/tomcat8</code> 这个目录，以便和之前的 <code>/opt/tomcat</code> 作区分。然后启动 Tomcat 8 当然就使用 <code>sudo /opt/tomcat8/bin/catalina.sh start</code> 这个命令了。</p>

<h4 id="2-eclispe-运行权限不够无法识别或执行-tomcat-服务器">2) Eclispe 运行权限不够无法识别或执行 Tomcat 服务器</h4>

<p>假设我们已经将 Tomcat 8.0 安装到了 <code>/opt/tomcat8</code> 这个目录。</p>

<p>由于最开始我们这个目录给除了 <code>tomcat</code> 用户外的其它用户的权限很小，也就是除了 <code>tomcat</code> 用户，其它用户都不能执行 Tomcat 甚至不能读取该目录。</p>

<p>所以如果我们的 Eclipse 是以普通用户权限运行的，那么它是没办法正确使用 Tomcat 的。</p>

<p>解决问题的办法有两个，第一种是更改 <code>/opt/tomcat8</code> 的权限，让普通用户能够访问并执行它；第二种是使用 root 权限来运行 Eclipse。这里把两种方法都写上。任选一种即可。</p>

<h5 id="方法一-更改-opt-tomcat8-的权限">方法一：更改 <code>/opt/tomcat8</code> 的权限</h5>

<p>打开终端，执行下面的命了即可，就是这么简单！也推荐就用这种做法：</p>

<pre><code>cd /opt/
sudo chmod -R 775 tomcat8
</code></pre>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-2.gif" alt="ubuntu-eclipse-2.gif" /></p>

<h5 id="方法二-使用-root-权限运行-eclipse">方法二：使用 root 权限运行 Eclipse</h5>

<p>为什么把这个方法也写上呢？是因为使用 root 权限运行 Eclipse 的时候也会遇到问题：</p>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-3.gif" alt="ubuntu-eclipse-3.gif" /></p>

<p>使用 root 运行 Eclispe 的时候，Eclispe 找不到 JAVA 运行环境了，也就是找不到 JRE 了。这和我们最初的环境变量设置有关。</p>

<p>那么如何解决问题呢？其实方法也有很多，可以修改环境变量，也可以用一种更巧妙的方式，就是将解压后的 <code>jre/</code> 目录放在 <code>eclipse.ini</code> 所在的目录，也就是 <code>/opt/eclipse/</code>。</p>

<p>我们之前已经安装过了 JDK，JDK 的安装目录是 <code>/opt/java</code>，里面就包含了 JRE，也就是 JRE 的目录是 <code>/opt/java/jre</code>。好了，下面就将 <code>jre/</code> 复制过去试试。</p>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-4.gif" alt="ubuntu-eclipse-4.gif" /></p>

<p>好了，可以看到现在 Eclipse 已经正常启动了。</p>

<p>更多方法可参考：<a href="http://stackoverflow.com/questions/2030434/eclipse-no-java-jre-jdk-no-virtual-machine">Eclipse - no Java (JRE) / (JDK) … no virtual machine</a></p>

<p>之所以举这两个例子，还有一点就是说明，解决一个问题的方法可能有很多种，仁者见仁，智者见智。</p>

<h3 id="2-关联-eclispe-和-tomcat">2. 关联 Eclispe 和 Tomcat</h3>

<p>假设我们上面是通过第一种方法解决的 Eclispe 不能使用 Tomcat 的问题。</p>

<p>接下来启动 Tomcat</p>

<pre><code>/opt/eclispe/eclipse
</code></pre>

<p>然后选择菜单栏 <code>Windows--&gt;preferences</code>，弹出如下界面：</p>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-5.gif" alt="ubuntu-eclipse-5.gif" /></p>

<p>上图中，点击&rdquo;add&rdquo;的添加按钮，弹出选择 Tomcat 版本的界面。之前说到的 Eclipse 不能识别 Tomcat 9.0 就是这一步不能识别。我们已经又安装了 Tomcat 8.0，所以这里选择 Tomcat 8.0。</p>

<p>接着点击 <code>Next</code>，选择 Tomcat 的安装目录，并选择我们安装的 Java 环境：</p>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-6.gif" alt="ubuntu-eclipse-6.gif" /></p>

<h3 id="3-使用-eclipse-创建第一个项目">3. 使用 Eclipse 创建第一个项目</h3>

<h4 id="1-新建动态网站项目">1) 新建动态网站项目</h4>

<p>选择 <code>File--&gt;New--&gt;Dynamic Web Project</code>，创建 <code>TomcatTest</code> 项目：</p>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-7.gif" alt="ubuntu-eclipse-7.gif" /></p>

<p>Eclipse 会自动选择默认的 Tomcat 版本。如果没有默认选择 Tomcat 的版本，则需求点击 <code>New Runtime</code> 按钮，选择我们刚才设置的 Tomcat 版本。</p>

<p>在Eclipse中只要创建一个Dynamic Web Project，就可以根据创建向导创建出一个典型 Java Web 站点的目录结构。除非有特殊需要，在大多数情况下都没有必要修改这个目录结构，这也是 Web 容器的缺省目录结构，我们只要直接使用即可。一般的目录结构如下：</p>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-8.png" alt="ubuntu-eclipse-8.png" /></p>

<ul>
<li>Deployment Descriptor：部署描述符。部署描述符描述了组件、模块或应用程序（如Web应用程序或企业级软件）应该如何部署。</li>
<li>JAX-WS Web Services：Java API for XML Web Services（JAX-WS）是 Java 程序设计语言一个用来创建 Web 服务的 API。</li>
<li>build：放入编译之后的文件。</li>
<li>WebContent：站点根目录。</li>
</ul>

<pre><code>WebContent (站点根目录)
     |----META-INF (META-INF文件夹)
     |----|---MANIFEST.MF (MANIFEST.MF配置清单文件)
     |----WEB-INF (WEB-INF文件夹)
     |----|----web.xml (站点配置web.xml)
     |----|----lib (第三方库文件夹)

WEB-INF:是Java的WEB应用的安全目录。所谓安全就是客户端无法访问，只有服务端可以访问的目录。如果想在页面中直接访问其中的文件，必须通过web.xml文件   对要访问的文件进行相应映射才能访问。

META-INF:文件夹相当于一个信息包，目录中的文件和目录获得Java 2平台的认可与解释，用来配置应用程序、扩展程序、类加载器和服务。
</code></pre>

<h4 id="2-新建一个-jsp-文件">2). 新建一个 JSP 文件</h4>

<p>接下来在 <code>WebContent</code> 文件夹下新建一个 <code>test.jsp</code> 文件：</p>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-9.gif" alt="ubuntu-eclipse-9.gif" /></p>

<p>接着我们修改下 <code>test.jsp</code> 文件。代码如下所示：</p>

<pre><code>&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot;
    pageEncoding=&quot;UTF-8&quot;%&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
&lt;title&gt;Tomcat Test&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%
	out.println(&quot;世界,你好!&quot;);
%&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-10.gif" alt="ubuntu-eclipse-10.gif" /></p>

<p>然后运行该项目：</p>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-11.gif" alt="ubuntu-eclipse-11.gif" /></p>

<h4 id="3-新建一个-servlet-文件">3). 新建一个 Servlet 文件</h4>

<p>我们也可以使用以上环境创建 Servlet 文件，选择 <code>File--&gt;New--&gt;Servlet</code>：</p>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-12.gif" alt="ubuntu-eclipse-12.gif" /></p>

<p>文件路径位于 TomcatTest项目的 /TomcatTest/src 目录下创建 &ldquo;HelloServlet&rdquo; 类，包为 &ldquo;com.runoob.test&rdquo;。</p>

<p>HelloServlet.java 代码如下所示：</p>

<pre><code>package com.test.test;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloWorld
 */
@WebServlet(&quot;/HelloWorld&quot;)
public class HelloWorld extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloWorld() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append(&quot;Served at: &quot;).append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
</code></pre>

<p>关于 JSP 和 Servlet 的关系，这里简单作几点说明：</p>

<ul>
<li><p>JSP 是 HTML 内嵌 JAVA 代码。从本质上讲，JSP 是 Servlet 的扩展，是简易版的 Servlet。Servlet 则完全和 HTML 分离开来，只运用在 JAVA 文件中。</p></li>

<li><p>JSP引擎从磁盘中载入JSP文件，然后将它们转化为servlet。这种转化只是简单地将所有模板文本改用println()语句，并且将所有的JSP元素转化成Java代码。</p></li>

<li><p>JSP引擎将servlet编译成可执行类。</p></li>
</ul>

<p>然后我们在运行一下 <code>HelloWorld.java</code>：</p>

<p><img src="http://oh1ywjyqf.bkt.clouddn.com/blog/2016-11-22-install-eclipse-jsp-servlet-develop-environment-13.gif" alt="ubuntu-eclipse-13.gif" /></p>

<hr />

<p>Github Issue: <a href="https://github.com/nodejh/nodejh.github.io/issues/19">https://github.com/nodejh/nodejh.github.io/issues/19</a></p>
                </section>
            </article>

            
                <a class="twitter" href="https://twitter.com/intent/tweet?text=http%3a%2f%2fnodejh.com%2fposts%2finstall-eclipse-jsp-servlet-develop-environment%2f - Eclipse%20JSP%2fServlet%20%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba by @nodejh"><span class="icon-twitter"> tweet</span></a>

<a class="facebook" href="#" onclick="
    window.open(
      'https://www.facebook.com/sharer/sharer.php?u='+encodeURIComponent(location.href),
      'facebook-share-dialog',
      'width=626,height=436');
    return false;"><span class="icon-facebook-rect"> Share</span>
</a>

            

            
                <div id="disqus_thread"></div>
<script type="text/javascript">
    var disqus_shortname = 'nodejh'; 

     
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div>

            

            

            <footer id="footer">
    
        <div id="social">

	
	
    <a class="symbol" href="https://www.facebook.com/nodejh">
        <i class="fa fa-facebook-square"></i>
    </a>
    
    <a class="symbol" href="https://www.github.com/nodejh">
        <i class="fa fa-github-square"></i>
    </a>
    
    <a class="symbol" href="https://www.twitter.com/nodejh">
        <i class="fa fa-twitter-square"></i>
    </a>
    


</div>

    
    <p class="small">
    
       © Copyright 2018 <i class="fa fa-heart" aria-hidden="true"></i> 
    
    </p>
    <p class="small">
        Powered by <a href="http://www.gohugo.io/">Hugo</a> Theme By <a href="https://github.com/nodejh/hugo-theme-cactus-plus">nodejh</a>
    </p>
</footer>

        </section>

        <script src="http://nodejh.com/js/jquery-2.2.4.min.js"></script>
<script src="http://nodejh.com/js/main.js"></script>
<script src="http://nodejh.com/js/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>




  
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-84989670-1', 'auto');
ga('send', 'pageview');
</script>





    </body>
</html>
